package com.ruoyi.dynamic.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.dynamic.model.pojo.entity.RoomMoment;
import com.ruoyi.dynamic.model.pojo.entity.RoomMomentRecord;
import com.ruoyi.dynamic.model.pojo.request.app.AppRoomHeartCreateRequest;
import com.ruoyi.dynamic.model.pojo.request.app.AppRoomHeartGetRequest;
import com.ruoyi.dynamic.model.pojo.request.app.AppRoomSelHeartRequest;
import com.ruoyi.dynamic.model.pojo.request.app.AppRoomSelectMomentRequest;
import com.ruoyi.dynamic.model.pojo.result.app.AppRoomGameSelResult;
import com.ruoyi.dynamic.model.pojo.result.app.AppRoomHeatResult;
import com.ruoyi.dynamic.model.pojo.result.app.AppRoomMomentSelResult;

import java.util.List;

/**
 * <p>
 * 房间心动交友记录 服务类
 * </p>
 *
 * @author Gnc
 * @since 2024-12-27
 */
public interface IRoomMomentService extends IService<RoomMoment> {

    /**
     * 获取当前游戏状态
     */
    AppRoomHeatResult findStatus(AppRoomHeartGetRequest request, Long userId);


    /**
     * 校验
     */
    RoomMoment verify(Long id);

    /**
     * 开启心动一刻游戏
     */
    Long openGame(AppRoomHeartCreateRequest request, Long userId);

    /**
     * 申请星光嘉宾位
     */
    boolean applyStarMai(Long userId, Long id);

    /**
     * 房间心动一刻自我介绍完下一步
     */
    void introOver(AppRoomHeartGetRequest request, Long userId);

    /**
     * 自由发言结束开始心动选择
     */
    void makeOver(AppRoomHeartGetRequest request, Long userId);

    /**
     * 心动选择完公布结果
     */
    AppRoomMomentSelResult pushResult(AppRoomHeartGetRequest request, Long userId);

    /**
     * 心动选择完自由发言
     *
     * @param request
     * @param userId
     */
    void selOver(AppRoomHeartGetRequest request, Long userId);

    /**
     * 选择心动
     */
    void isHeart(AppRoomSelHeartRequest request, Long userId);

    /**
     * 放弃选择
     *
     * @param request
     * @param userId
     */
    void giveUp(AppRoomHeartGetRequest request, Long userId);

    /**
     * 星光嘉宾选择女嘉宾
     */
    void starSel(AppRoomSelectMomentRequest request, Long userId);


    /**
     * 获取本场游戏结果
     */
    List<RoomMomentRecord> getResult(Long roomId, Long id);

    /**
     * 获取心动一刻结果
     */
    List<AppRoomGameSelResult> getMomentResult(AppRoomHeartGetRequest request);

    /**
     * 星光嘉宾结束发言
     */
    boolean starOverSay(AppRoomHeartGetRequest request, Long userId);

    /**
     * 结束游戏
     * @param request
     * @param userId
     */
    void over(AppRoomHeartGetRequest request, Long userId);

}
